package cn.tedu.charging.order.controller;

import cn.tedu.chaging.common.web.JsonResult;
import cn.tedu.charging.order.pojo.param.OrderAddParam;
import cn.tedu.charging.order.pojo.vo.OrderDetailVO;
import cn.tedu.charging.order.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@Slf4j
@RequestMapping("/order")
@RestController
@Api(tags = "订单相关接口")
public class OrderController {

    @Autowired
    //@Resource
    //面试题 这个区别 八股文
    private OrderService orderService;

    @ApiOperation("创建订单")
    @PostMapping("create") //restful
    public JsonResult createOrder(@Validated @RequestBody OrderAddParam orderAddParam) throws Exception {
        log.debug("创建订单的入参-{}",orderAddParam);
        //xxx 别的代码有可能修改了入参
        //创建类型的接口是否返回结果,要根据业务来决定,如果后续的业务要基于返回得id
        //做其他的操作,比如查看订单详情,这个返回的id,可以作为查订单详情的入参
        log.debug("创建订单调用service入参-{}",orderAddParam);
        String orderNo = orderService.createOrder(orderAddParam);
        log.debug("创建订单调用service入参-{},出参-{}",orderAddParam,orderNo);
       /* JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(2000);
        jsonResult.setData(orderNo);
        jsonResult.setMsg("订单创建成功");*/

        JsonResult result = JsonResult.ok(orderNo, "订单创建成功");
        log.debug("创建订单的入参-{},出参-{}",orderAddParam,result);
        return result;

        //前端工程 if(code != 2000) {alert("订单创建成功")}
        //创建订单的接口出参应该是什么?
    }

    /**
     * 正常停止充电 一般是用户充了一会没有充满,因为某种原因 不充了 主动停止
     * @param orderNO
     * @return
     * @throws Exception
     */
    @ApiOperation("停止充电")
    @PostMapping("/normal/stop/{orderNO}") //restful
    public JsonResult stop(@PathVariable("orderNO") String orderNO)  {
        log.debug("停止充电的入参-{}",orderNO);
        OrderDetailVO orderDetailVO = orderService.normalStop(orderNO);
        JsonResult result = JsonResult.ok(orderDetailVO, "停止成功,谢谢惠顾");
        return result;
    }

    /**
     * 订单详情
     * 订单列表
     * 删除订单
     */


}
